package com.bigstonecontainer.training.springboot.frm.server.sys.mapper;

import com.bigstonecontainer.training.springboot.frm.server.sys.domain.SysMenu;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 菜单权限表Mapper。
 *
 * @author jiaodacailei
 */
@Mapper
public interface SysMenuMapper {

    /**
     * 菜单权限表列表查询
     *
     * @return 菜单权限表列表
     */
    List<SysMenu> getList();

    List<SysMenu> selectMenuListByRoleIds(String roleIds);

    /**
     * 获取单个菜单权限表信息
     *
     * @param id 菜单权限表ID
     * @return 单个菜单权限表信息
     */
    SysMenu getOne(Long id);

    /**
     * 插入一个菜单权限表到数据库中
     *
     * @param menu 菜单权限表
     * @return 插入的记录个数
     */
    int insert(SysMenu menu);

    /**
     * 在数据库中，通过主键查找一个菜单权限表，并进行修改
     *
     * @param menu 菜单权限表
     * @return 修改的记录个数
     */
    int updateById(SysMenu menu);

    /**
     * 在数据库中，通过主键查找一个菜单权限表，并进行删除
     *
     * @param id 菜单权限表ID
     * @return 删除的记录个数
     */
    int deleteById(Long id);

    List<SysMenu> selectMenuList(SysMenu menu);

    List<SysMenu> selectMenuListByUserId(SysMenu menu);

    List<Integer> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
}
